package com.controlador;

import java.io.*;
import java.util.Vector;

import javax.swing.JOptionPane;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.util.Constantes;

public class JavaPDFWriter {

	//Vector<?> v, String[] enc
	 @SuppressWarnings("unused")
	public void escribePDF(Vector<?> v, String[] enc){
		 
		 PDDocument documento = null;
		 PDPage paginaNueva = null;
		 float margen=200;
		 
		 
		 int lineas = v.size();
		 Vector<?> vTemp = (Vector<?>) v.elementAt(0);
		 int columnas = vTemp.size();
		 float lineaAltura = 20f;
		 
	     float tablaAlto = lineaAltura * lineas;
	     
	     float celdaMargen=5f;
	 
	     
	    
	     try {
	     //creamos documento
		 documento = new PDDocument();
		 //creamos pagina y se hace uno
		 paginaNueva = new PDPage();
		 float tablaAncho = paginaNueva.findMediaBox().getWidth() - margen - margen;//por que falla
		 //float columnaAltura = tablaAncho/(float)columnas;//igual que arriba
		 documento.addPage(paginaNueva);
		 
		//se carga al contenido
		 PDPageContentStream contenido = new PDPageContentStream(documento, paginaNueva);
	     
		 
		 //dibujar las lineas
		 float siguienteY = 700;
		 for (int i = 0; i <= lineas; i++) {
		        contenido.drawLine(margen, siguienteY, margen+tablaAncho, siguienteY);
		        siguienteY-= lineaAltura;
		    }
		 
		 
		 //dibujar las columnas
	     float siguienteX = margen;
	     for (int i=0;i<columnas;i++)
	     {
	    	 contenido.drawLine(siguienteX, 700, siguienteX, 700-tablaAlto);
	    	 
	     }
		 
	   //se pone la fuente
		 PDFont fuente =  PDType1Font.HELVETICA;
		 		 
		 
		 float textx = margen+celdaMargen;
		    float texty = 700-15;        
		    for(int i = 0; i < lineas; i++){
		    	 Vector<?> vLinea = (Vector<?>) v.elementAt(i);
		        for(int j = 0 ; j < columnas; j++){
		            //Vector<?> vcol = (Vector<?>) vLinea.elementAt(j);
		        	/*
		        	String text = content[i][j];
		            contentStream.beginText();
		            contentStream.moveTextPositionByAmount(textx,texty);
		            contentStream.drawString(text);
		            contentStream.endText();
		            textx += colWidth;*/
		        }
		        texty-=lineaAltura;
		        textx = margen+celdaMargen;
		    }
		
			 
			 
			 
			 //la magia aqui
			 //contenido.beginText();
			 //contenido.setFont(fuente, 12);
			 
			 
			 
			 //contenido.moveTextPositionByAmount( 100, 700 );
			 //contenido.drawString("Hola Mundo!");
			 
			 
			 
			 
			 //contenido.endText();
			 
			 //cerramos la magia
			 contenido.close();
			 
			 
			 //guardamos y cerramos el docto 
			 documento.save(Constantes.ARCHIVO_PDF_TEMPORAL);
			 documento.close();
			JOptionPane.showMessageDialog(null, "Export complete");
		} catch (Exception e) {
			System.err.println("error: "+e.getMessage());
		}
		 
		
	
	 }


	 public void escribePDF(String[] enc, Vector<?> v)
	 {
		 try {
			 Document documento = new Document();
			 PdfWriter.getInstance(documento, new FileOutputStream(Constantes.ARCHIVO_PDF_TEMPORAL));
			 documento.open();
			 int tope=enc.length;
			 PdfPTable tabla = new PdfPTable(tope);
			 
			 
			 for(int i=0;i<tope;i++)
			 {
				 	 
				 tabla.addCell(new PdfPCell(new Paragraph(enc[i])));
				 
			 }
			 
			 for (int i=0; i<v.size();i++)
			 {
				 Vector<?> vtmp = (Vector<?>) v.elementAt(i);
				 tope=vtmp.size();
				 for(int j=0;j<tope;j++)
				 {
					 String stmp = (String) vtmp.elementAt(j);
					 tabla.addCell(new PdfPCell(new Paragraph(stmp)));		
					 
				 }
				 
			 }
			 
			 
			 documento.add(tabla);
			 
			 documento.close();
		 
			
		} catch (Exception e) {
			System.err.println("error:" +e.getLocalizedMessage());
		}
		 
		
		 
		 JOptionPane.showMessageDialog(null, "Export Correct");
	 }
	 
}
